package Demo1;

class Animal{
    public String name;
    public int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //抽象出动物共有的行为
    protected void eat(){
        System.out.println("进食");
    }
    //抽象出生物吃的事物
    protected void food(){
        System.out.println("主食的品种");
    }
}

class Cat extends Animal{

    public Cat(String name, int age) {
        super(name, age);
    }
    //对父类的进食行为进行重写
    @Override
    protected void eat() {
        System.out.println(this.name+"正在进食");
    }
    //对父类的食物品种方法进行重写
    @Override
    protected void food() {
        System.out.println(this.name+"的食物品种是猫条");
    }
    //子类中的成员方法fun
    public void fun(){
        System.out.println("子类中的普通方法fun");
    }
}

public class javaTest {
    public static void main(String[] args) {
        //实例化一个子类对象cat
        //并用父类引用接收发生向上转型
        Animal cat=new Cat("小橘喵",18);
        //发生多态
        cat.eat();
        cat.food();
        //此处通过父类对象引用子类普通成员方法，报错
        //因为该方法并没有子类对父类方法进行重写
        cat.fun();


    }
}
